/**
 * Token工具类
 * 用于管理和操作access_token
 */

import api from './api.js';

export default {
  /**
   * 获取access_token
   * 首先尝试从本地存储获取，如果不存在则从服务器获取
   */
  getAccessToken() {
    return new Promise((resolve, reject) => {
      // 尝试从本地获取
      const accessToken = uni.getStorageSync('access_token');
      
      if (accessToken) {
        resolve(accessToken);
      } else {
        // 从服务器获取
        api.getAccessToken()
          .then(res => {
            if (res.statusCode === 200 && res.data.success) {
              const token = res.data.data.access_token;
              uni.setStorageSync('access_token', token);
              resolve(token);
            } else {
              reject(new Error('获取access_token失败'));
            }
          })
          .catch(err => {
            console.error('获取access_token出错:', err);
            reject(err);
          });
      }
    });
  },
  
  /**
   * 刷新access_token
   * 强制从服务器获取新的access_token
   */
  refreshAccessToken() {
    return new Promise((resolve, reject) => {
      // 清除本地存储的token
      uni.removeStorageSync('access_token');
      
      // 从服务器获取新的token
      api.getAccessToken()
        .then(res => {
          if (res.statusCode === 200 && res.data.success) {
            const token = res.data.data.access_token;
            uni.setStorageSync('access_token', token);
            resolve(token);
          } else {
            reject(new Error('刷新access_token失败'));
          }
        })
        .catch(err => {
          console.error('刷新access_token出错:', err);
          reject(err);
        });
    });
  },
  
  /**
   * 检查access_token是否存在
   */
  hasAccessToken() {
    return !!uni.getStorageSync('access_token');
  },
  
  /**
   * 清除access_token
   */
  clearAccessToken() {
    uni.removeStorageSync('access_token');
  }
}; 